package design.patterns.proxymode.staticProxy.service;

import design.patterns.proxymode.staticProxy.api.IDrive;

/**
 * 聚合代理：
 *      一个类中调用另一个对象
 * 时间代理
 * @author ： cww
 * @date : 2018/7/5
 */
public class CarTogetherLogProxy implements IDrive {

    /**
     * 通过自身的构造函数将需要聚合的对象引入
     * 代理类和被代理类都是实现了Drive接口
     * 那构造方法就直接传入drive对象
     * @param IDrive
     */
    public CarTogetherLogProxy(IDrive IDrive){
//        super();
        this.IDrive = IDrive;
    }

    private IDrive IDrive;

    @Override
    public void drive() {
        //2在代理方法上下再添加业务逻辑
        System.out.println("日志记录开始");
        //1使用构造传入的car的drive方法
        IDrive.drive();
        System.out.println("日志记录结束");
    }
}
